#include <stdio.h>
#include <stdlib.h>

int escreve_vetor(int* vetor,int tamanho){
	if (tamanho <= 0){
		printf("\n");
		return 1;
	}
	else{
		printf("%d ",*vetor);
		return escreve_vetor(vetor+1,tamanho-1);
	}
}

void shellsort(int* vetor,int tamanho){
  int H=1;
  while(H < tamanho)
    H=3*H+1;

  do{
    H=H/3;
    int i;
    for(i = H;i < tamanho;i++){
      int pivo = vetor[i];
      int j = i-H;
      while(j >= 0 && vetor[j] > pivo){
        vetor[j+H]=vetor[j];
        j=j-H;
      }
      vetor[j+H]=pivo;
    }
  }while(H > 1);
}

int main(){
	int vetor[8] = {10,8,15,21,13,17,9,12};
	printf("Vetor original: ");
	escreve_vetor(vetor,8);
	shellsort(vetor,8);
	printf("\nVetor ordenado: ");
	escreve_vetor(vetor,8);
	return 0;
}
